package com.ys.ArrayList模拟;

/**
 * 描述: 自定义List接口
 *
 * @author CodeYang
 * @version 2020/12/25 0:55
 */
public interface List<E> {
    /**
     * 添加元素，在List末尾添加元素
     *
     * @param element 需要插入元素
     */
    void add(E element);

    /**
     * 插入元素，在指定索引位置插入元素
     *
     * @param index   需要插入的索引位置
     * @param element 需要插入元素
     */
    void add(int index, E element);

    /**
     * 根据索引删除数组元素
     *
     * @param index 删除元素的索引
     * @return 返回被删除的元素
     */
    E remove(int index);

    /**
     * 根据参数来删除数组元素
     *
     * @param element 需要删除的元素
     * @return 返回是否删除成功
     */
    boolean remove(E element);

    /**
     * 根据索引获取元素
     *
     * @param index 获取元素的索引值
     * @return 返回index对应的元素值
     */
    E get(int index);

    /**
     * 判断集合是否为空
     *
     * @return 如果集合为空，则返回true；如果集合不为空，则返回false
     */
    boolean isEmpty();

    /**
     * 返回第一次出现在集合中的索引位置（从前往后找）
     *
     * @param element 需要查找的元素
     * @return 如果element在数组中存在，则返回第一次出现的索引位置；如果element在数组中不存在，则返回-1.
     */
    int indexOf(E element);

}
